#include<iostream>
#include<explicit.hpp>
#include<typeinfo>

template<typename T>
void show(T t)
{
    std::cout<<typeid(t).name()<<std::endl;
}

template void show<int>(int t);  //显式实例化

template void show(float j);

template<typename T>
void show2(T t1, T t2)
{
    return;
}

template void show2(int t1, int t2);

template<typename T1, typename T2>
void show3(T1 t1, T2 t2)
{

}

template void show3<int, float>(int t1, float t2);

template<> void show3<float, int>(float t1, int t2);  //显式具体化




// template class Base<int>;  //显式实例化



int main()
{
//     float i = 1;
//     show(i);
    int j=2;
//     show3(i, j);
    Base<int> b_int;
    b_int.show(j);
    return 0;
}